home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / yacc / flexyacc / aflex.lha / aflex / src / misc_defsB.a < prev    next >
Text File  |  1991-05-16  |  6KB  |  180 lines

  1. -- Copyright (c) 1990 Regents of the University of California.
  2. -- All rights reserved.
  3. --
  4. -- This software was developed by John Self of the Arcadia project
  5. -- at the University of California, Irvine.
  6. --
  7. -- Redistribution and use in source and binary forms are permitted
  8. -- provided that the above copyright notice and this paragraph are
  9. -- duplicated in all such forms and that any documentation,
  10. -- advertising materials, and other materials related to such
  11. -- distribution and use acknowledge that the software was developed
  12. -- by the University of California, Irvine.  The name of the
  13. -- University may not be used to endorse or promote products derived
  14. -- from this software without specific prior written permission.
  15. -- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  16. -- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  17. -- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18.  
  19. -- TITLE miscellaneous definitions
  20. -- AUTHOR: John Self (UCI)
  21. -- DESCRIPTION contains all global variables used in aflex.
  22. --             also some subprograms which are commonly used.
  23. -- NOTES The real purpose of this file is to contain all miscellaneous
  24. --       items (functions, MACROS, variables definitions) which were at the
  25. --       top level of flex.
  26. -- $Header: /co/ua/self/arcadia/aflex/ada/src/RCS/misc_defsB.a,v 1.5 90/01/12 15:20:21 self Exp Locker: self $ 
  27.  
  28. package body MISC_DEFS is 
  29.  
  30. -- returns true if an nfa state has an epsilon out-transition slot
  31. -- that can be used.  This definition is currently not used.
  32.  
  33.   function FREE_EPSILON(STATE : in INTEGER) return BOOLEAN is 
  34.   begin
  35.     return ((TRANSCHAR(STATE) = SYM_EPSILON) and (TRANS2(STATE) = NO_TRANSITION)
  36.       and (FINALST(STATE) /= STATE)); 
  37.   end FREE_EPSILON; 
  38.  
  39.   -- returns true if an nfa state has an epsilon out-transition character
  40.   -- and both slots are free
  41.  
  42.   function SUPER_FREE_EPSILON(STATE : in INTEGER) return BOOLEAN is 
  43.   begin
  44.     return ((TRANSCHAR(STATE) = SYM_EPSILON) and (TRANS1(STATE) = NO_TRANSITION)
  45.       ); 
  46.   end SUPER_FREE_EPSILON; 
  47.  
  48.   function ALLOCATE_INTEGER_ARRAY(SIZE : in INTEGER) return INT_PTR is 
  49.   begin
  50.     return new UNBOUNDED_INT_ARRAY(0 .. SIZE); 
  51.   end ALLOCATE_INTEGER_ARRAY; 
  52.  
  53.   procedure REALLOCATE_INTEGER_ARRAY(ARR  : in out INT_PTR; 
  54.                                      SIZE : in INTEGER) is 
  55.     NEW_ARR : INT_PTR; 
  56.   begin
  57.     NEW_ARR := ALLOCATE_INTEGER_ARRAY(SIZE); 
  58.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  59.     ARR := NEW_ARR; 
  60.   end REALLOCATE_INTEGER_ARRAY; 
  61.  
  62.   procedure REALLOCATE_STATE_ENUM_ARRAY(ARR  : in out STATE_ENUM_PTR; 
  63.                                         SIZE : in INTEGER) is 
  64.     NEW_ARR : STATE_ENUM_PTR; 
  65.   begin
  66.     NEW_ARR := ALLOCATE_STATE_ENUM_ARRAY(SIZE); 
  67.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  68.     ARR := NEW_ARR; 
  69.   end REALLOCATE_STATE_ENUM_ARRAY; 
  70.  
  71.   procedure REALLOCATE_RULE_ENUM_ARRAY(ARR  : in out RULE_ENUM_PTR; 
  72.                                        SIZE : in INTEGER) is 
  73.     NEW_ARR : RULE_ENUM_PTR; 
  74.   begin
  75.     NEW_ARR := ALLOCATE_RULE_ENUM_ARRAY(SIZE); 
  76.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  77.     ARR := NEW_ARR; 
  78.   end REALLOCATE_RULE_ENUM_ARRAY; 
  79.  
  80.   function ALLOCATE_INT_PTR_ARRAY(SIZE : in INTEGER) return INT_STAR_PTR is 
  81.   begin
  82.     return new UNBOUNDED_INT_STAR_ARRAY(0 .. SIZE); 
  83.   end ALLOCATE_INT_PTR_ARRAY; 
  84.  
  85.   function ALLOCATE_RULE_ENUM_ARRAY(SIZE : in INTEGER) return RULE_ENUM_PTR is 
  86.   begin
  87.     return new UNBOUNDED_RULE_ENUM_ARRAY(0 .. SIZE); 
  88.   end ALLOCATE_RULE_ENUM_ARRAY; 
  89.  
  90.   function ALLOCATE_STATE_ENUM_ARRAY(SIZE : in INTEGER) return STATE_ENUM_PTR
  91.     is 
  92.   begin
  93.     return new UNBOUNDED_STATE_ENUM_ARRAY(0 .. SIZE); 
  94.   end ALLOCATE_STATE_ENUM_ARRAY; 
  95.  
  96.   function ALLOCATE_BOOLEAN_ARRAY(SIZE : in INTEGER) return BOOLEAN_PTR is 
  97.   begin
  98.     return new BOOLEAN_ARRAY(0 .. SIZE); 
  99.   end ALLOCATE_BOOLEAN_ARRAY; 
  100.  
  101.   function ALLOCATE_VSTRING_ARRAY(SIZE : in INTEGER) return VSTRING_PTR is 
  102.   begin
  103.     return new UNBOUNDED_VSTRING_ARRAY(0 .. SIZE); 
  104.   end ALLOCATE_VSTRING_ARRAY; 
  105.  
  106.   function ALLOCATE_DFAACC_UNION(SIZE : in INTEGER) return DFAACC_PTR is 
  107.   begin
  108.     return new UNBOUNDED_DFAACC_ARRAY(0 .. SIZE); 
  109.   end ALLOCATE_DFAACC_UNION; 
  110.  
  111.   procedure REALLOCATE_INT_PTR_ARRAY(ARR  : in out INT_STAR_PTR; 
  112.                                      SIZE : in INTEGER) is 
  113.     NEW_ARR : INT_STAR_PTR; 
  114.   begin
  115.     NEW_ARR := ALLOCATE_INT_PTR_ARRAY(SIZE); 
  116.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  117.     ARR := NEW_ARR; 
  118.   end REALLOCATE_INT_PTR_ARRAY; 
  119.  
  120.   procedure REALLOCATE_CHARACTER_ARRAY(ARR  : in out CHAR_PTR; 
  121.                                        SIZE : in INTEGER) is 
  122.     NEW_ARR : CHAR_PTR; 
  123.   begin
  124.     NEW_ARR := ALLOCATE_CHARACTER_ARRAY(SIZE); 
  125.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  126.     ARR := NEW_ARR; 
  127.   end REALLOCATE_CHARACTER_ARRAY; 
  128.  
  129.   procedure REALLOCATE_VSTRING_ARRAY(ARR  : in out VSTRING_PTR; 
  130.                                      SIZE : in INTEGER) is 
  131.     NEW_ARR : VSTRING_PTR; 
  132.   begin
  133.     NEW_ARR := ALLOCATE_VSTRING_ARRAY(SIZE); 
  134.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  135.     ARR := NEW_ARR; 
  136.   end REALLOCATE_VSTRING_ARRAY; 
  137.  
  138.   function ALLOCATE_CHARACTER_ARRAY(SIZE : in INTEGER) return CHAR_PTR is 
  139.   begin
  140.     return new CHAR_ARRAY(0 .. SIZE); 
  141.   end ALLOCATE_CHARACTER_ARRAY; 
  142.  
  143.   procedure REALLOCATE_DFAACC_UNION(ARR  : in out DFAACC_PTR; 
  144.                                     SIZE : in INTEGER) is 
  145.     NEW_ARR : DFAACC_PTR; 
  146.   begin
  147.     NEW_ARR := ALLOCATE_DFAACC_UNION(SIZE); 
  148.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  149.     ARR := NEW_ARR; 
  150.   end REALLOCATE_DFAACC_UNION; 
  151.  
  152.   procedure REALLOCATE_BOOLEAN_ARRAY(ARR  : in out BOOLEAN_PTR; 
  153.                                      SIZE : in INTEGER) is 
  154.     NEW_ARR : BOOLEAN_PTR; 
  155.   begin
  156.     NEW_ARR := ALLOCATE_BOOLEAN_ARRAY(SIZE); 
  157.     NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST); 
  158.     ARR := NEW_ARR; 
  159.   end REALLOCATE_BOOLEAN_ARRAY; 
  160.  
  161.   function MAX(X, Y : in INTEGER) return INTEGER is 
  162.   begin
  163.     if (X > Y) then 
  164.       return X; 
  165.     else 
  166.       return Y; 
  167.     end if; 
  168.   end MAX; 
  169.  
  170.   function MIN(X, Y : in INTEGER) return INTEGER is 
  171.   begin
  172.     if (X < Y) then 
  173.       return X; 
  174.     else 
  175.       return Y; 
  176.     end if; 
  177.   end MIN; 
  178.  
  179. end MISC_DEFS; 
  180.